package info.stapel;

/**
 *
 * @author Martin
 */
public class Stapel extends DoppelListe implements Cloneable{

    //private StapelElement kopf, aktuell;

    public Stapel() {
        
    }

    public void push(Object o) {
        StapelElement next=null;
        if(kopf!=null){
            next=kopf;
        }
        kopf=new StapelElement(o,next);
    }

    public void pop() {
        if(kopf==null||kopf.next==null){
            kopf=null;
        } else {
            kopf=kopf.next;
        }
        //löscht das oberste Object des Stapels
    }

    @Override
    public Object aktuellesElement() {
        //Top-Methode
        return kopf.object;
    }

    public Object next(){
        kopf=kopf.next;
        return kopf;
    }
    
    public boolean isEmpty() {
        return kopf==null;
    }
    
    @Override
    public String toString(){
        Stapel temp=(Stapel) this.clone();
        
        String s="";
        while(!temp.isEmpty()){
            s+=String.valueOf(temp.aktuellesElement()+"\n");
            temp.pop();
        }
        return s;
    }
    
    @Override
    public Object clone() {
      Object theClone = null;
      try {
        theClone = super.clone();
      }
      catch(CloneNotSupportedException e) {
      }
      return theClone;
    }

}
